package at.fhj.itm10.ticketmaster.services;

import java.util.Date;
import java.util.List;

import at.fhj.itm10.ticketmaster.entities.Address;
import at.fhj.itm10.ticketmaster.entities.Customer;

/**
 * Customer service.
 * Implements methods for CustomerService.
 * @author Wolfgang Gaar
 */
public interface CustomerService {
	
	void insertCustomer(Customer customer, Address address);
	
	void updateCustomer(Customer customer);
	
	void deleteCustomer(Customer customer);
	
	String register();
	
	String getAgbText();
	
	String getImpressumText();
	
	public Customer getCustomer();

	public void setCustomer(Customer customer);

	public boolean getisPromoter();

	public void setIsPromoter(boolean isPromoter);
	
	public String getTitle();

	public void setTitle(String title);

	public String getName();

	public void setName(String name);

	public String getLastName();

	public void setLastName(String lastName);

	public String getUserName();

	public void setUserName(String userName);

	public String getEmail();

	public void setEmail(String email);

	public String getPassword();

	public void setPassword(String password);

	public boolean getGender();

	public void setGender(boolean gender);

	public long getAdressId();

	public void setAdressId(long adressId);

	public boolean isNewsletter();

	public void setNewsletter(boolean newsletter);

	public Date getBirth();

	public void setBirth(Date birth);

	public String getSecpassword();

	public void setSecpassword(String secpassword);
	
	public Address getAddress();

	public void setAddress(Address address);

	public String getAddressName();

	public void setAddressName(String addressName);

	public String getStreet();
	
	public void setStreet(String street);
	
	public String getZip();

	public void setZip(String zip);

	public String getCity();

	public void setCity(String city);

	public String getCountry();

	public void setCountry(String country);

	public Date getRegisterDate();

	public void setRegisterDate(Date registerDate);

	public boolean isAgb();

	public void setAgb(boolean agb);

	public boolean isImpressum();

	public void setImpressum(boolean impressum);
	
	Customer findById(long id);

	Customer findByEMail(String email);

	Customer findByUsername(String username);

	List<Customer> findAll();
	
	void sendRecoveryMail(String email, String resetKey) throws Exception;
	
	void sendActivationMail(String email) throws Exception;
	
	void resetCustomerPasswordByEMail(String email, String newPlaintextPassword);
}